package com.sxt.system.service;

import com.sxt.system.domain.Permission;
import com.sxt.system.utils.DataGridView;
import com.sxt.system.vo.PermissionVO;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 俊哥
 * @since 2019-11-09
 */
public interface IPermissionService extends IService<Permission> {

	/**
	 * 	分页查询全部菜单数据
	 * @param permissionVO
	 * @return
	 */
	DataGridView loadAllPermission(PermissionVO permissionVO);

	/**
	 * 	生成树的数据
	 * @param permissionVO
	 * @return
	 */
	List<Permission> queryAllPermissionForList(PermissionVO permissionVO);

	/**
	 * 	获取最大排序码
	 * @return
	 */
	Integer queryPermissionMaxOrderNum();

	/**
	 * 	添加
	 * @param permission
	 * @return
	 */
	Permission addPermission(Permission permission);
	
	/**
	 * 	修改
	 * @param permission
	 * @return
	 */
	Permission updatePermission(Permission permission);

	/**
	 * 	根据部门ID查询当前部门有多少子节点
	 */
	Integer queryPermissionCountByPid(Integer id);

	/**
	 * 根据角色的Id加载并选中权限和菜单
	 * @param roleId
	 * @return
	 */
	DataGridView queryRolePermissionByRoleId(Integer roleId);

	/**
	 * 根据用户ID查询用户拥有的菜单
	 * @param permissionVO
	 * @param id
	 * @return
	 */
	List<Permission> queryPermissionByUserIdForList(PermissionVO permissionVO, Integer id);

	/**
	 * 查询权限编码
	 * @param id
	 * @return
	 */
	List<String> queryPermissionsByUserId(Integer id);
	
}
